//Name: Player Camera
//Author:Max Charnock
//Last Updated: 14/05/2014
//Purpose: Manages player camera

#pragma once

// The three avaiable camera modes
enum CameraMode {FREE_MODE, FIRST_PERSON, THIRD_PERSON};

#include "VirtualCamera.h"


class PlayerCamera
{
private:

	//pointer to current scenes virtual camera
	VirtualCamera* pCamera;

	//enum used to determine camera mode
	CameraMode Mode;

	XMFLOAT3 thirdPersonOffset;
	XMFLOAT3 firstPersonOffset;

public:

	PlayerCamera();
	~PlayerCamera();

	// Assigns the mode specified when calling, to the mode of the camera
	void ChangeCameraMode(CameraMode mode);

	// Initalise the camera and set the offsets for each mode depending on
	// the scale of the player
	void Intialise(VirtualCamera* camera, XMFLOAT3 playerScale);

	void Update(XMFLOAT3 player,float angle);

	VirtualCamera* GetCamera();

	// Returns the current camera mode
	CameraMode GetCameraMode();
};